import { IPSModelObject } from '../../ipsmodel-object';
import { IPSAppMethodDTO } from '../ipsapp-method-dto';
import { IPSApplicationObject } from '../ipsapplication-object';
import { IPSAppDEMethodDTOField } from './ipsapp-demethod-dtofield';
import { IPSAppDataEntity } from './ipsapp-data-entity';
import { IPSAppDataEntityObject } from './ipsapp-data-entity-object';

/**
 *
 * 子接口类型识别属性[]
 * @export
 * @interface IPSAppDEMethodDTO
 */
export interface IPSAppDEMethodDTO extends IPSModelObject, IPSAppDataEntityObject, IPSApplicationObject {
  /**
   * 代码标识
   * @type {string}
   */
  codeName: string;

  /**
   * DTO对象属性集合
   *
   * @type {IPSAppDEMethodDTOField[]}
   */
  getPSAppDEMethodDTOFields(): IPSAppDEMethodDTOField[] | null;

  /**
   * DTO对象属性集合
   *
   * @type {IPSAppDEMethodDTOField[]}
   */
  get psAppDEMethodDTOFields(): IPSAppDEMethodDTOField[] | null;

  findPSAppDEMethodDTOField(objKey: any): IPSAppDEMethodDTOField | null;

  /**
   * 引用应用实体DTO
   *
   * @type {IPSAppDEMethodDTO}
   */
  getRefPSAppDEMethodDTO(): IPSAppDEMethodDTO | null;

  /**
   * 引用应用实体DTO
   *
   * @type {IPSAppDEMethodDTO}
   */
  get refPSAppDEMethodDTO(): IPSAppDEMethodDTO | null;

  /**
   * 引用应用实体DTO（必须存在）
   *
   * @type {IPSAppDEMethodDTO}
   */
  getRefPSAppDEMethodDTOMust(): IPSAppDEMethodDTO;

  /**
   * 引用应用实体
   *
   * @type {IPSAppDataEntity}
   */
  getRefPSAppDataEntity(): IPSAppDataEntity | null;

  /**
   * 引用应用实体
   *
   * @type {IPSAppDataEntity}
   */
  get refPSAppDataEntity(): IPSAppDataEntity | null;

  /**
   * 引用应用实体（必须存在）
   *
   * @type {IPSAppDataEntity}
   */
  getRefPSAppDataEntityMust(): IPSAppDataEntity;

  /**
   * 实体方法DTO对象来源类型
   * @description 值模式 [实体方法DTO来源类型] {DE：实体、 DYNAMODEL：动态模型、 DEACTIONINPUT：实体行为参数、 DEFILTER：实体过滤器、 REFDE：引用实体、 DEDATASETINPUT：实体数据集参数 }
   * @type {( string | 'DE' | 'DYNAMODEL' | 'DEACTIONINPUT' | 'DEFILTER' | 'REFDE' | 'DEDATASETINPUT')}
   */
  sourceType: string | 'DE' | 'DYNAMODEL' | 'DEACTIONINPUT' | 'DEFILTER' | 'REFDE' | 'DEDATASETINPUT';

  /**
   * 源应用DTO
   *
   * @type {IPSAppMethodDTO}
   */
  getSrcPSAppMethodDTO(): IPSAppMethodDTO | null;

  /**
   * 源应用DTO
   *
   * @type {IPSAppMethodDTO}
   */
  get srcPSAppMethodDTO(): IPSAppMethodDTO | null;

  /**
   * 源应用DTO（必须存在）
   *
   * @type {IPSAppMethodDTO}
   */
  getSrcPSAppMethodDTOMust(): IPSAppMethodDTO;

  /**
   * 类型
   * @description 值模式 [实体方法DTO类型] {DEFAULT：实体默认、 DEACTIONINPUT：实体行为自定义参数、 DEFILTER：实体过滤器、 DEDATASETINPUT：实体数据集自定义参数 }
   * @type {( string | 'DEFAULT' | 'DEACTIONINPUT' | 'DEFILTER' | 'DEDATASETINPUT')}
   */
  type: string | 'DEFAULT' | 'DEACTIONINPUT' | 'DEFILTER' | 'DEDATASETINPUT';
}
